import { Pipe, PipeTransform } from '@angular/core';

/**
 * 优惠券是否可编辑
 * 状态为草稿、审核不通过时，可全部编辑
 * 状态为审核通过、进行中时、（名称、备注、发放总量（此时右侧会显示已经领取的总数）、前端展示、可领取时间（如果状态是进行中，则“可领取开始时间”就不能再改了）、使用说明、适用商品整体都可以编辑；
 * 1：审核通过；2：进行中；3：已结束；4：已停止；5：草稿；6：待审核；7：审核不通过；
 * value 
 * exponent
 */
@Pipe({ name: 'couponEditStatus' })
export class couponEditStatusPipe implements PipeTransform {
    transform(value: any, exponent?: any): any {
      if (value && value?.status) {
        // 草稿和审核不通过都可编辑
        if ([5, 7].includes(value?.status)) {
          return false
        }

        // 审核通过和进行中、只可编辑个别字段
        if ([1, 2].includes(value?.status) && exponent) {
          return false
        }

        return true;
      } else {
        return false;
      }
    }
}

/**
 * 广告状态**
 * exponent 'text': 文字，'color'：颜色
 * 状态 0.未开始 1.进行中 2已结束 3已删除 
 */
@Pipe({ name: 'currentStatus' })
export class currentStatusPipe implements PipeTransform {
    transform(value: any, exponent?: any): any {
      if (value || value == 0) {
        if (exponent == 'text') {
          switch (value) {
            case 0:
              return '未开始'
            case 1:
              return '进行中'
            case 2:
              return '已结束'
            case 3:
              return '已删除'
            default:
              return '-'
          }
        } else if (exponent == 'color') {
          switch (value) {
            case 0:
              return '#333333'
            case 1:
              return '#008000'
            case 2:
              return '#FF9900'
            case 3:
              return '#CCCCCC'
            default:
              return '-'
          }
        }
      } else {
        return '-'
      }
    }
}

/**
 * 广告截止时间**
 * 如果截止时间不超过36个小时，则1，橙色警告色；2，鼠标悬浮的时候提醒：该广告将会在3天内失效
 */
@Pipe({ name: 'uptoTimeStatus' })
export class uptoTimeStatusPipe implements PipeTransform {
    transform(value: any, exponent?: any): any {
      let oneTime = 3600 * 1000;
      let now = Date.now();
      let endTime = new Date(value).getTime();
      let diffValue: any
      
      if (value) {
        diffValue = (endTime - now) / oneTime;
        if (endTime >= now && diffValue <= 36) {
          return true;
        } else {
          return false;
        }
      } else {
        return false;
      }
    }
}

/**
 * 广告位管理**
 * 渠道
 * 字典获取
 */
@Pipe({ name: 'channelStatus' })
export class channelStatusPipe implements PipeTransform {
    transform(value: any, exponent?: any): any {
      if (value) {
        let tampArr: any = [];
        if (exponent.type == 'text') {
          tampArr = exponent.list.filter((item: any) => {
            return value.split(',').includes(item.content)
          })
        }

        return tampArr.map((tag: any) => tag.name).join('，')
      } else {
        return '-'
      }
    }
}

/**
 * 广告位管理**
 * 业务
 * 字典获取
 */
@Pipe({ name: 'businessStatus' })
export class businessStatusPipe implements PipeTransform {
  transform(value: any, exponent?: any): any {
    if (value) {
      let tempArr: any = [];
      if (exponent.list && exponent.list.length) {
        tempArr = exponent.list.filter((item: any) => item.content == value)
      }
      return tempArr[0]?.name || '-'
    } else {
      return '-'
    }
  }
}

/**
 * 送连接线活动--状态
 * 状态 0.待审核 1.审核通过 2.审核不通过
 * @param { string } type 'text' || 'color'
 * @return { string }
 */
@Pipe({ name: 'connectLineState' })
export class ConnectLineStatePipe implements PipeTransform {
  transform(value: any, type: string): string {
    switch (value) {
      case 0:
        return type == 'text' ? '待审核' : '#FF9900';
      case 1:
        return type == 'text' ? '审核通过' : '#008000';
      case 2:
        return type == 'text' ? '审核不通过' : '#CCCCCC';
      default: 
        return type == 'text' ? '-' : '#303133';
    }
  }
}

/**
 * 下单中奖记录--状态
 * 状态 1-退回成功 2-退回失败 3-无需退回 4-正常
 * @param { string } type 'text' || 'color'
 * @return { string }
 */
@Pipe({ name: 'returnStatus' })
export class ReturnStatusPipe implements PipeTransform {
  transform(value: any, type: string): string {
    switch (value) {
      case 1:
        return type == 'text' ? '退回成功' : '#008000';
      case 2:
        return type == 'text' ? '退回失败' : '#FF0000';
      case 3:
        return type == 'text' ? '无需退回' : '#CCCCCC';
      case 4:
        return type == 'text' ? '正常' : '#008000';
      default: 
        return type == 'text' ? '-' : '#303133';
    }
  }
}

/**
 * 下单中奖记录--奖品类型
 * 奖品类型 1-实物奖励 2-优惠券 3-谢谢惠顾
 * @param { string } type 'text' || 'color'
 * @return { string }
 */
 @Pipe({ name: 'prizeStatus' })
 export class PrizeStatusPipe implements PipeTransform {
   transform(value: any, type?: string): string {
    switch (value) {
      case 1:
        return '占位';
      case 2:
        return '优惠券';
      case 3:
        return '谢谢参与';
      case 6:
        return '手动奖品';
      case 7:
        return '二手优惠券';
      case 8:
        return '回收加价券';
      default: 
        return '-';
    }
  }
}

/**
 * 下单抽奖列表、中奖记录列表--状态
 * 0.未开始 1.进行中 2.已删除 3已结束 4 禁用
 * @param { string } type 'text' || 'color'
 * @return { string }
 */
@Pipe({ name: 'placeStatus' })
export class PlaceStatusPipe implements PipeTransform {
  transform(value: any, type?: string): string {
    switch (value) {
      case 0:
        return type == 'text' ? '未开始' : '#CCCCCC';
      case 1:
        return type == 'text' ? '进行中' : '#008000';
      case 2:
        return type == 'text' ? '已删除' : '#FF0000';
      case 3:
        return type == 'text' ? '已结束' : '#C0C0C0';
      case 4:
        return type == 'text' ? '禁用' : '#808080';
      default: 
        return type == 'text' ? '-' : '#303133';
    }
  }
}

/**
 * 兑换码记录 状态
 * 0：未兑换、1：已兑换、2：已过期、3：已作废
 */
export const changeCodeStatusArrs = [
  {value: 0, label: '未兑换', color: '#008000'},
  {value: 1, label: '已兑换', color: '#666666'},
  {value: 2, label: '已过期', color: '#CCCCCC'},
  {value: 3, label: '已作废', color: '#FF0000'}
]
@Pipe({ name: 'changeCodeStatus' })
export class ChangeCodeStatusPipe implements PipeTransform {
  transform(value: any, type?: string) {
    let tempObj: any = changeCodeStatusArrs.find((item: any) => item.value === value);
    if (type === 'color') {
      return tempObj?.color || '#666666';
    }

    return tempObj?.label || '-';
  }
}

/**
 * 加价券状态 1：审核通过[已发布] 2：进行中[已发布] 3：已结束 4：已停止 5：草稿
 */
export const recoveryMarkupStatusArrs: any = [
  { value: 1, label: '已发布', color: '#67C23A' },
  { value: 2, label: '已发布', color: '#67C23A' },
  { value: 3, label: '已结束', color: '#F56C6C' },
  { value: 4, label: '已停止', color: '#F56C6C' },
  { value: 5, label: '草稿', color: '#909399' }
];
@Pipe({
  name: 'recoveryMarkupStatus'
})
export class RecoveryMarkupStatusPipe implements PipeTransform {
  transform(value: any, type: string) {
    if (value || value === 0) {
      let tempObj = recoveryMarkupStatusArrs.find((item: any) => {
        return item.value === value;
      })

      switch (type) {
        case 'label':
          return tempObj ? tempObj.label : '-';
        case 'color':
          return tempObj ? tempObj.color : '#333333';
      }
    } else {
      return '-';
    }
  }
}

